/*
 * ES EL CAMPO DE JUEGO
 */

package gui;

import java.awt.Color;
import logic.Jugador;

/**
 *
 * @author Miguel Boscan
 */
public class PanelCancha extends javax.swing.JPanel {
    private  JPanelPosicion equipoLocal[]; //Paneles de equipo 1
    private  JPanelPosicion equipoVisitante[];  //Paneles de equipo 2
  
   
    
    public PanelCancha(VentanaEquipos oyente) {
        initComponents();
        
        equipoLocal= new JPanelPosicion[4];
        equipoVisitante=new JPanelPosicion[4];
        intPanels(oyente);
        
       Gol_Local.addActionListener(oyente);
       Gol_Local.setActionCommand("Puerta Local");
       Gol_Visitante.addActionListener(oyente);
       Gol_Visitante.setActionCommand("Puerta Visitante");
       LineaBanda.addActionListener(oyente);
       LineaBanda.setActionCommand("Banda");
       LineaBanda2.addActionListener(oyente);
       LineaBanda2.setActionCommand("Banda");
       LineaMeta_Local.addActionListener(oyente);
       LineaMeta_Local.setActionCommand("Meta Local");
       LineaMeta_Visitante.addActionListener(oyente);
       LineaMeta_Visitante.setActionCommand("Meta Vis");
       
    }

    public JPanelPosicion[] getEquipoLocal() {
        return equipoLocal;
    }

    public JPanelPosicion[] getEquipoVisitante() {
        return equipoVisitante;
    }
    
    public JPanelPosicion getEquipoLocal_pos(int i) {
        return equipoLocal[i];
    }

    public JPanelPosicion getEquipoVisitante_pos(int i) {
        return equipoVisitante[i];
    }
    /**
     * @author Rafael Rivero
     */
    /**
     * Inicializa Las franjas trasparentes
     */
    private void intPanels(VentanaEquipos oyente){
        int i=0,j=65;
           //Coloca los paneles de los porteros
             equipoLocal[i]=new JPanelPosicion(oyente);
             equipoVisitante[i]=new JPanelPosicion(oyente);   
             this.jPanelCampo.add(equipoLocal[i]);
             this.jPanelCampo.add(equipoVisitante[i]);
             equipoLocal[i].setBounds(25, 0, 40, 315);
             equipoVisitante[i].setBounds(393, 0, 40, 312);
         //Agrega los paneles de los jugadores vacios  
         for(i=1;i<4;i++){
             equipoLocal[i]=new JPanelPosicion(oyente);
             equipoVisitante[i]=new JPanelPosicion(oyente);            
             equipoLocal[i].setBounds(12+j, 0, 50, 315);
             equipoVisitante[i].setBounds(393-(j-12), 0, 50, 312);
             this.jPanelCampo.add(equipoLocal[i]);
             this.jPanelCampo.add(equipoVisitante[i]);
             j+=52;
         }
    }
    
    /**
     * Metodo para ver la posicion del jugador (Por, Def, Med, Del)
     * @param nuevo recibe el jugador a verificar
     * @return retorna la posicion
     */
   private int verPos(Jugador nuevo){
       int pos=0;
                   
         //Ve la posicion a cual pertenece el jugador
        if( nuevo.getPosicionPreferida().equals("POR")){
            pos=0;
        }
        if( nuevo.getPosicionPreferida().equals("DEF")){
            pos=1;
        }
        if( nuevo.getPosicionPreferida().equals("MID")){
            pos=2;
        }
        if( nuevo.getPosicionPreferida().equals("DEL")){
            pos=3;
        }
          return pos;
   }
   
   /**
    * Agrega un Jugador a una de las franjas
    * Ve en que franja agregarlo y en cual equipo.
    * @param nuevo Resibe un Jugador
    * @return Retorna 1 si no lo pudo agregar, Retorna 0 si todo esta bien
    */
    public int agregarJugador(Jugador nuevo){
        int pos=0;
          
       //Posicion del jugador 
        pos=verPos(nuevo);
          
        // Ve si es  del equipo local lo agrega en el arreglo de locales si no en el de visitantes
        if ( nuevo.getEquipo() == 0 ){
            if( nuevo.getPosicionPreferida().compareTo("POR")==0 && equipoLocal[pos].getNumJugadores()>0){
                return 1;
            }
           if(equipoLocal[pos].agregarJugador(nuevo)==1){
               return 1; //Retorna 1 si no lo pudo agregar
           }
       
        }else{
           if( (nuevo.getPosicionPreferida().compareTo("POR")==0) && (equipoVisitante[pos].getNumJugadores()>0)){
                return 1;
            }
           if(equipoVisitante[pos].agregarJugador(nuevo)==1){
               return 1; //Retorna 1 si no lo pudo agregar
           }
        }
        return 0; //Retorna 0 si todo esta bien
    }
    
    /**
     * Borrar Jugador de una de las franjas
     * @param aBorrar Recibe el jugador que se quiere borrar
     * @return Retorna 1 si no se encontro el jugador, 0 si lo borro.
     */
    public int borrarJugadorFranja(Jugador aBorrar){
        int pos=verPos(aBorrar);//Guarda la franja a cual pertenece(Posicion)
        
        
          if ( aBorrar.getEquipo() == 0 ){
           if(equipoLocal[pos].eliminarJugador(aBorrar)==1){
               return 1; //Retorna 1 si no lo pudo borrar
           }
        }else{
           if(equipoVisitante[pos].eliminarJugador(aBorrar)==1){
               return 1; //Retorna 1 si no lo pudo borrar
           }
        }
        return 0; //REtorna 0 si completo la operacion
    }
    public void ocultarBalon(){
               int i,j;
        // Para ocultar el balon de los jugadores que no lo tienen en el equipo local
        for(i=0; i < equipoLocal.length; i++){
            for(j=0; j < equipoLocal[i].getNumJugadores(); j++){
                equipoLocal[i].getArrayJugadores_pos(j).ocultarBalon();
            }
        }
        // Para ocultar el balon de los jugadores que no lo tienen en el equipo Visitante
        for(i=0; i < equipoVisitante.length; i++){
            for(j=0; j < equipoVisitante[i].getNumJugadores(); j++){
               equipoVisitante[i].getArrayJugadores_pos(j).ocultarBalon();
            }
        }
    }
    /**
     * Para transferir el balon graficamente
     * @param jugador Es el jugador grafico que tendra el balon
     */
    public void transferirBalon(Jugador jugador){
        int posfranja,posjugador;
        
        ocultarBalon();
        
        posfranja = verPos(jugador);
        // Para mostrar el balon del Jugador que lo tiene
        if (jugador.getEquipo()==0){   // Si es Local
            posjugador = equipoLocal[posfranja].buscarJugador(jugador);
            equipoLocal[posfranja].getArrayJugadores_pos(posjugador).mostrarBalon();
        }
        else{                         // Si es Visitante
            posjugador = equipoVisitante[posfranja].buscarJugador(jugador);
            equipoVisitante[posfranja].getArrayJugadores_pos(posjugador).mostrarBalon();
        }
    }
    
    

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        LineaMeta_Local = new javax.swing.JButton();
        LineaBanda2 = new javax.swing.JButton();
        jPanelCampo = new ImagenPanel("/images/Cancha.jpg");
        Gol_Local = new javax.swing.JButton();
        Gol_Visitante = new javax.swing.JButton();
        LineaMeta_Visitante = new javax.swing.JButton();
        LineaBanda = new javax.swing.JButton();

        setBackground(new java.awt.Color(204, 204, 255));
        setMaximumSize(new java.awt.Dimension(488, 312));
        setMinimumSize(new java.awt.Dimension(488, 312));
        setOpaque(false);
        setPreferredSize(new java.awt.Dimension(488, 312));

        Gol_Local.setBackground(new java.awt.Color(153, 153, 153));

        Gol_Visitante.setBackground(new java.awt.Color(153, 153, 153));

        javax.swing.GroupLayout jPanelCampoLayout = new javax.swing.GroupLayout(jPanelCampo);
        jPanelCampo.setLayout(jPanelCampoLayout);
        jPanelCampoLayout.setHorizontalGroup(
            jPanelCampoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanelCampoLayout.createSequentialGroup()
                .addComponent(Gol_Local, javax.swing.GroupLayout.PREFERRED_SIZE, 15, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 428, Short.MAX_VALUE)
                .addComponent(Gol_Visitante, javax.swing.GroupLayout.PREFERRED_SIZE, 15, javax.swing.GroupLayout.PREFERRED_SIZE))
        );
        jPanelCampoLayout.setVerticalGroup(
            jPanelCampoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanelCampoLayout.createSequentialGroup()
                .addContainerGap(117, Short.MAX_VALUE)
                .addGroup(jPanelCampoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(Gol_Visitante, javax.swing.GroupLayout.PREFERRED_SIZE, 50, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(Gol_Local, javax.swing.GroupLayout.PREFERRED_SIZE, 50, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(116, 116, 116))
        );

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
        this.setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(0, 0, 0)
                .addComponent(LineaMeta_Local, javax.swing.GroupLayout.PREFERRED_SIZE, 15, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(LineaBanda2, javax.swing.GroupLayout.PREFERRED_SIZE, 458, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jPanelCampo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(LineaBanda, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 458, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(0, 0, Short.MAX_VALUE)
                .addComponent(LineaMeta_Visitante, javax.swing.GroupLayout.PREFERRED_SIZE, 15, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(0, 0, 0))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addComponent(LineaBanda, javax.swing.GroupLayout.PREFERRED_SIZE, 14, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(0, 0, 0)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                    .addComponent(LineaMeta_Visitante, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(jPanelCampo, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(LineaMeta_Local, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                .addGap(0, 1, Short.MAX_VALUE)
                .addComponent(LineaBanda2, javax.swing.GroupLayout.PREFERRED_SIZE, 14, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(0, 0, 0))
        );
    }// </editor-fold>//GEN-END:initComponents

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton Gol_Local;
    private javax.swing.JButton Gol_Visitante;
    private javax.swing.JButton LineaBanda;
    private javax.swing.JButton LineaBanda2;
    private javax.swing.JButton LineaMeta_Local;
    private javax.swing.JButton LineaMeta_Visitante;
    private javax.swing.JPanel jPanelCampo;
    // End of variables declaration//GEN-END:variables
}
